Techniques for Migrating Active I/O Connections with Migrating Servers and Clients

ABSTRACT

A technique for modifying an input/output (I/O) connection type between a client and a server includes determining, by the client, when at least partial storage access control for the client is to be migrated from a first virtualized I/O server to a second virtualized I/O server. An I/O connection type, from among multiple available I/O connection types available between the client and the second virtualized I/O server, is then selected by the client when the at least partial storage access control for the client is to be migrated. The selected I/O connection type is then communicated, by the client, to the second virtualized I/O server, which is configured to facilitate storage access for the client using the selected I/O connection type.

BACKGROUND

This disclosure relates generally to migrating active input/output (I/O)connections and, more particularly to techniques for migrating activeI/O connections with migrating virtualized I/O servers and/or I/Oclients.

InfiniBand (IB) is a switched fabric communications link that has beenemployed in high performance computing (HPC) applications. Similar toFibre channel (FC), peripheral component interconnect (PCI) express, andserial advanced technology attachment (ATA), as well as other moderninterconnects, IB offers point-to-point bidirectional serial links forconnecting processors with high-speed peripherals, e.g., disks. Today,FC is widely used as the standard connection type for storage areanetworks (SANs). FC protocol (FCP) is a transport protocol (similar totransmission control protocol (TCP) used in Internet protocol (IP)networks) that predominantly transports small computer system interface(SCSI) commands over FC networks. FC supports a number of upper layerprotocols, including SCSI, asynchronous transfer mode (ATM), and IP. TheSCSI standards define commands, protocols, and electrical and opticalinterfaces. SCSI is most commonly used for hard disks and tape drives,but can connect a wide range of other devices, e.g., scanners andcompact disc (CD) drives.

Unlike FC, which has traditionally required special-purpose cabling,Internet SCSI (iSCSI) can be run over relatively long distances usingmany existing network infrastructures. iSCSI is an IP-based storagenetworking standard for linking data storage facilities. iSCSI can beused to transmit data over local area networks (LANs), wide areanetworks (WANs), or the Internet and facilitates location-independentdata storage and retrieval. iSCSI is a popular SAN protocol that allowsorganizations to consolidate storage into data center storage arrays,while providing hosts (such as database and web servers) with theillusion of locally-attached disks. A SAN architecture is typically usedto attach remote computer storage devices (e.g., disk arrays, tapelibraries, and optical jukeboxes) to servers in such a way that thedevices appear locally attached, with respect to an operating system(OS). A SAN only provides block-level operations, as contrasted withfile abstraction. However, file systems may be built on top of SANs toprovide file abstraction. In contrast to SANs, network attached storage(NAS) uses file-based protocols, where it is clear that the storage isremote and computers request a portion of an abstract file rather than adisk block. NAS provides both storage and a file system, in contrast toSANs, which typically provide only block-based storage and leave filesystem concerns to the client-side. Protocols employed in SANs includeSCSI, FC, iSCSI, advanced technology attachment (ATA), and ATA overEthernet (AoE), among other protocols. Despite their differences, SANsand NAS are not mutually exclusive, and may be combined, offering bothfile-level protocols and block-level protocols from the same system.

I/O virtualization is a methodology that is typically implemented tosimplify management, lower costs, and improve performance of servers.I/O virtualization environments are created by abstracting upper layerprotocols from physical connections. I/O virtualization enables onephysical adapter card to appear as multiple virtual network interfacecards (vNICs) and virtual host bus adapters (vHBAs). vNICs and vHBAsfunction as conventional NICs and HBAs and are designed to be compatiblewith existing OSs, hypervisors, and applications. To networkingresources (e.g., LANs and SANs), the vNICs and vHBAs appear as normalcards and adapters. Virtual I/O provides a shared transport for allnetwork and storage connections. Virtual I/O addresses performancebottlenecks by consolidating I/O to a single connection, whose bandwidthideally exceeds the I/O capacity of an associated server (to ensure thatan associated I/O link is not a bottleneck). Bandwidth is thendynamically allocated in real-time across multiple virtual connectionsto both storage and network resources. In I/O intensive applications,I/O virtualization can help increase both virtual machine (VM)performance and the number of VMs that may execute on a given server.

Storage virtualization refers to the process of abstracting logicalstorage from physical storage. In general, physical storage resourcesare aggregated into storage pools, from which logical storage iscreated. Storage virtualization presents a logical space for datastorage and transparently handles the process of mapping the logicalspace to the actual physical location. Storage virtualization istypically implemented in modern disk arrays using vendor proprietarysolutions. However, the goal of storage virtualization is usually tovirtualize multiple disk arrays from different vendors, scattered over anetwork, into a single monolithic storage device, which can be manageduniformly.

File systems, which are the most common means of accessing disk storage,are abstractions of a physical storage object (e.g., rotating magneticmedia, solid state electronic devices, directory structured magnetictapes) into a more human friendly format, where data can be organizedinto files, folders and other similar objects. Many modern OSs,including those derived from the UNIX or Windows OSs, abstract the finalconnection between the file system into, for example, a device switch, adevice array, or a device control block. Each physical device, as wellas each type of physical device (which may also include networkconnected storage, virtualized disk storage, etc.) has a differenthandle, identifier, or other type of object. These data structures orobjects include the information needed by the OS or disk I/O subsystemto convert requests for disk I/O into actual data transfer (i.e., eitherreading or writing).

SUMMARY

According to one aspect of the present disclosure, a technique formodifying an input/output (I/O) connection type between a client and aserver includes determining, by the client, when at least partialstorage access control for the client is to be migrated from a firstvirtualized I/O server to a second virtualized I/O server. An I/Oconnection type, from among multiple available I/O connection typesavailable between the client and the second virtualized I/O server, isthen selected by the client, when the at least partial storage accesscontrol for the client is to be migrated. The selected I/O connectiontype is then communicated, by the client, to the second virtualized I/Oserver, which is configured to facilitate storage access for the clientusing the selected I/O connection type.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and is notintended to be limited by the accompanying figures, in which likereferences indicate similar elements. Elements in the figures areillustrated for simplicity and clarity and have not necessarily beendrawn to scale.

FIG. 1 is a block diagram of an example data processing environment thatmay be configured to migrate active input/output (I/O) connectionsaccording to various aspects of the present disclosure.

FIG. 2 is a block diagram of another example data processing environmentthat may be configured to migrate active I/O connections according tovarious embodiments of the present disclosure.

FIG. 3 is a flowchart of an example process for migrating an active I/Oconnection for a client according to various aspects of the presentdisclosure.

FIG. 4 is a flowchart of an example process for migrating active I/Oconnections for clients in a client cluster according to various aspectsof the present disclosure.

DETAILED DESCRIPTION

As will be appreciated by one skilled in the art, aspects of the presentinvention may be embodied as a system, method or computer programproduct. Accordingly, aspects of the present invention may take the formof an entirely hardware embodiment, an entirely software embodiment(including firmware, resident software, micro-code, etc.) or anembodiment combining software and hardware aspects that may allgenerally be referred to herein as a “circuit,” “module” or “system.”Furthermore, aspects of the present invention may take the form of acomputer program product embodied in one or more computer readablemedium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: a portable computerdiskette, a hard disk, a random access memory (RAM), a read-only memory(ROM), an erasable programmable read-only memory (EPROM or Flashmemory), a portable compact disc read-only memory (CD-ROM), an opticalstorage device, a magnetic storage device, or any suitable combinationof the foregoing. In the context of this document, a computer readablestorage medium may be any tangible medium that can contain, or store aprogram for use by or in connection with an instruction executionsystem, apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. As may be used herein, the term “coupled”includes both a direct electrical connection between blocks orcomponents and an indirect electrical connection between blocks orcomponents achieved using one or more intervening blocks or components.

When virtualized input/output (I/O) servers, logical partitions, networkattached storage (NAS), and/or storage area network (SAN) devices aremigrated opportunities for improving I/O connections may exist when, forexample, a new physical location of an I/O client is closer to a newphysical location of a migrated virtualized I/O server. According tovarious embodiments of the present disclosure, each time an I/O client(e.g., a disk I/O client) or a virtualized I/O server (e.g., avirtualized disk I/O server) is migrated, related endpoints (i.e., aserver in the case of a client migrating or a client in the case of aserver migrating) may determine the network topology of each connection,as well as available I/O connection types.

For example, a client may query an I/O server as to which I/O connectiontypes are possible given an Internet protocol (IP) address. Based on theconnection types available, client and server data structures may bemodified to, for example, select the most efficient (e.g., in terms ofdata transfer speed) I/O connection type available. In one embodiment,disk I/O requests are suspended pending the I/O connection typemodification (which may be an upgrade or a downgrade in the I/Oconnection type), with the I/O connection type modification beingconsidered both prior to migration and once migration is complete. Forsome I/O connection changes (e.g., local to network), it may bedesirable to complete the I/O connection type change prior to migration.For other I/O connection type changes (e.g., network to local), it maybe desirable to complete the I/O connection type change followingmigration. In any case, following disk I/O connection migration, diskI/O may resume on a connection-by-connection basis.

According to another aspect of the present disclosure, a new I/Oconnection may be established between a new virtualized I/O server andan I/O client, while an old I/O connection between the I/O client and anold virtualized I/O server is maintained. In this case, followingmigration initiation, new I/Os are sent to the new virtualized I/Oserver, while the old virtualized I/O server completes service of theold I/Os. When the old virtualized I/O server finishes servicing the oldI/Os, the old I/O connection is closed. In this manner, I/O accessdowntime is reduced (and possibly eliminated) and rebooting of the I/Oclient is avoided.

According to various aspects of the present disclosure, an I/Oconnection may be upgraded or downgraded when an endpoint (server orclient) is moved from its origin. In a typical situation, migration ofan endpoint, (either a client or a server) results in either a networkconnection (e.g., an IP address of an iSCSI device changes) or aphysical I/O connection (e.g., an available adapter changes from: FC toSCSI; FC to iSCSI; FC to IB; IB to FC; IB to SCSI; IB to iSCSI; iSCSI toSCSI) being changed. For example, a network connection might be changedby migrating a virtual I/O server to a different virtual host (which isnot local to a previous connection, or which becomes local to theprevious connection). Each type of change may result in a physical typeI/O connection being changed (e.g., I/O connections where physicalblocks are specified, rather than logical connections where the physicalI/O structure is concealed, such as with network file system (NFS),common Internet file system (CIFS), and similar mechanisms). Forexample, an I/O connection type may change from iSCSI to SCSI or fromone network file system type (e.g., network attached storage (NAS), SAN,or other block-structured I/O mechanism) to another, as a result of anI/O server being migrated.

A number of patents disclose migrating files or storage. For example,U.S. Pat. No. 7,219,096 (hereinafter “the '096 patent”) discloses amethod for migrating files on a busy file system, with the migratedfiles being recreated on a different file system. However, the '096patent does not address the case where there is no desire to break aclient/server connection, but rather to change characteristics of theconnection to one which is more efficient (if possible), or lessefficient (if required to maintain the client/server connection). Asanother example, U.S. Pat. No. 6,976,103 (hereinafter “the '103 patent”)discloses a method for migrating storage. However, the '103 patent doesnot address modifying a connection type when a virtualized I/O server(or network disk I/O service) is migrated.

As yet another example, U.S. Pat. No. 6,931,441 (hereinafter “the '441patent”) discloses a method for migrating an actual network connectionby means of an encapsulating mechanism. In the '441 patent, networkcommunication is made between capsules, with the capsules handlingchanges in network addressing. However, the '441 patent does not addressmigrating the physical connection between a disk I/O client and avirtualized disk I/O server. While migration as disclosed in the '441patent may include changing a network address, the network addresschange is handled by changing the underlying abstracted block deviceinterface, or other such mechanism. As an example, if a client movedfrom IP address 192.168.1.12 to IP address 192.168.0.7 and the client isnow located within a virtual host that also contains an associated diskI/O server (e.g., at IP address 192.168.0.2), following the disclosureof the '441 patent, packet routing would be changed without upgradingthe I/O connection. While some performance benefit may result fromchanging the network transport (e.g., a virtual network where traffic onthe 192.168.0/24 subnet was not transmitted over physical connections,as with products such as VMware and others), greater benefits areusually provided by removing the software layer which abstracts thephysical connection into a network protocol (according to one or moreembodiments of the present disclosure).

With reference to FIG. 1, an example data processing environment 100 isillustrated that includes a client 110 and a client 130 that areconfigured to select (or at least participate in the selection of) anI/O connection type when an associated virtualized I/O server ismigrated (e.g., created in a different virtual host) and/or when clients110 and 130 are re-located (when, for example, clients 110 and 130 aremobile devices). Clients 110 and 130 may take various forms, such asworkstations, laptop computer systems, notebook computer systems, smartphones, web-enabled portable devices, or desktop computer systems. Forexample, client 110 may correspond to a desktop computer system of acomputer system user and client 130 may correspond to a web-enableddevice of another computer system user.

Client 110 includes a processor 102 (which may include one or moreprocessor cores for executing program code) coupled to a data storagesubsystem 104, a display 106, one or more input devices 108, and aninput/output adapter (IOA) 109. IOA 109 may be virtualized as: a FibreChannel (FC) adapter, a small computer system interface (SCSI) adapter,an Internet SCSI (iSCSI) adapter, or an InfiniBand (IB) adapter, amongother adapters. Data storage subsystem 104 may include, for example, anapplication appropriate amount of volatile memory (e.g., dynamic randomaccess memory (DRAM)), non-volatile memory (e.g., read-only memory (ROM)or static RAM), and/or non-volatile mass storage device, such as amagnetic or optical disk drive. Data storage subsystem 104 includes anoperating system (OS) 114 for client 110, as well as applicationprograms, such as a browser 112 (which may optionally include customizedplug-ins to support various client applications), application 118 (whichmay include an email application, a word processing application, etc.),and an I/O connection type application 120. I/O connection typeapplication 120, when executed by clients 110 and 130, is configured tointeract with a virtualized I/O server (e.g., servers 124 or 126) todetermine what I/O connection types are available when clients 110 and130 are migrated and/or an associated virtualized I/O server (e.g.,servers 126 or 124) is migrated.

Display 106 may be, for example, a cathode ray tube (CRT) or a liquidcrystal display (LCD). Input device(s) 108 of client 110 may include,for example, a mouse, a keyboard, haptic devices, and/or a touch screen.IOA 109 supports communication of client 110 with one or more wiredand/or wireless networks utilizing one or more communication protocols,such as 802.x, HTTP, simple mail transfer protocol (SMTP), etc. IOA 109also facilitates communication between clients 110 and 130 and mayphysically correspond to, for example, an FC adapter, an IB adapter, anSCSI adapter, or an iSCSI adapter, among other adapters.

Clients 110 and 130 are coupled via one or more wired or wirelessnetworks, such as Internet/intranet 122, to optional storage manager 128(which may be a SAN manager) and hosts 134 and/or 136 and respectivevirtualized I/O servers 124 and 126. Virtualized I/O servers 124 and 126provide respective access to data stored on disk arrays 115 and 125.Hosts 124 and 126 may be physically located in, for example, a same roomof a building, a different room of a building, a different building in alimited geographical area, or a different geographical area (e.g.,different cites, counties, states, or countries). As one example,virtualized I/O servers 124 and 126 may each represent six virtualizedI/O servers.

It should be appreciated that hosts 134 and 136 may each implement moreor less than six virtualized I/O servers and a virtual machine manager(VMM) or hypervisor for controlling operation of the virtualized I/Oservers (which may each utilize the same or a different OS), as well asan I/O connection type application that, when executed by hosts 134 and136, facilitates communication with client 110 and 130 to determine whatI/O connection types are available following migration of clients 110and 130 and/or an associated virtualized I/O server (e.g., servers 126or 124). While only two clients and two hosts (i.e., physical platforms)are shown associated with data processing environment 100, it should beappreciated that more or less than two clients and more or less than twohosts may be implemented in a data processing environment configuredaccording to the present disclosure. Host 134 and array 115 may beincluded within a NAS or SAN (NAS/SAN) 131. Similarly, host 136 andarray 125 may be included within a different NAS or SAN (NAS/SAN) 133.Arrays 115 and 125 may each correspond to, for example, redundant arrayof inexpensive disks (RAID) arrays.

With reference to FIG. 2, an example data processing environment 200 isillustrated that includes a client cluster 210 that includes multipleclients 110 and a client cluster 230 that includes multiple clients 130.Clients 110 and 130 are configured to select an I/O connection type whenan associated virtualized I/O server is migrated (e.g., to a differentvirtual host) and/or when clients 110 and 130 are re-located (when, forexample, clients 110 and 130 are mobile devices). Clients 110 and 130are coupled via one or more wired or wireless networks, such asInternet/intranet 122, to optional storage manager 128 (which may be,for example, a SAN manager) and hosts 134 and/or 136 and respectivevirtualized I/O servers 124 and 126. As with the data processingenvironment 100 of FIG. 1, virtualized I/O servers 124 and 126 provideaccess to data stored on respective disk arrays 115 and 125. Forexample, virtualized I/O servers 124 and 126 may each represent one ormore virtualized I/O servers.

It should be appreciated that hosts 134 and 136 may each implement morethan one virtualized I/O server and a virtual machine manager (VMM) orhypervisor for managing operation of implemented virtualized I/Oservers. While only two client clusters are shown associated with dataprocessing environment 200, it should be appreciated that more or lessthan two client clusters may be associated with a data processingenvironment configured according to the present disclosure. In any case,when a virtualized I/O server that is servicing a client cluster ismigrated, clients within a client cluster may coordinate betweenthemselves and/or between the clients and the migrated (new) virtualizedI/O server to determine what I/O connection type each of the clients mayimplement. For example, clients in a client cluster may implementdifferent I/O connection types to balance a load on an associatedvirtualized I/O server.

With reference to FIG. 3, an example process 300 is illustrated thatmigrates active I/O connection types of a client according to variousaspects of the present disclosure. It should be appreciated thatportions of process 300 may execute, at any given point in time, onclients 110 or 130, hosts 134 or 136, optional storage manager 128, or acombination thereof. Process 300 may be periodically initiated at block302 by, for example, storage manager 128, which may be implemented as astand-alone application on a dedicated server or on hosts 134 and 136.In block 303, client 110 accesses storage via an old (first) virtualizedI/O server. Process 300 then proceeds to decision block 304, whereclient 110 (alone or in conjunction with, for example, storage manager128) determines whether at least partial storage access control requiresmigration (e.g., due to an addition of an upgraded host (which may beincluded in a SAN or NAS) or maintenance on a current host and/or a diskarray associated therewith). When migration is not indicated in block304, control transfers to block 310, where process 300 terminates andcontrol returns to a calling routine.

When migration is indicated in block 304, control transfers to block306, where client 110 (alone or in conjunction with, for example, a new(second) virtualized I/O server) selects an I/O connection type for theconnection between client 110 and the new virtualized I/O server. Theselected I/O connection type may be the same or different than the I/Oconnection type employed between the client and the old virtualized I/Oserver. The new virtualized I/O server may correspond to, for example, areplica of the old virtualized I/O server. In this case, both the newand old virtualized servers may facilitate storage access for theclient. The first and second virtualized I/O servers may be, forexample, located in a same storage area network (SAN). In one or moreembodiments, each client selects its own I/O connection type. In anotherembodiment, the new virtualized I/O server selects (alone or incombination with, for example, storage manager 128) an I/O connectiontype for each client. The new virtualized I/O server may be, forexample, a replica of the old virtualized I/O server that is migrated toa new virtual host.

As one example, the I/O connection type may be selected based on testing(by a client) each of the multiple available I/O connection types todetermine a performance level of each of the multiple available I/Oconnection types. In this case, the I/O connection type may be selected(by a client), for example, based on which of the multiple available I/Oconnection types has a highest performance level and allows a connectionbetween the client and the new virtualized I/O server to be maintained.Next, in block 308, client 110 communicates the selected I/O connectiontype to the new virtualized I/O server. Then, in block 309, client 110accesses storage using the new virtualized I/O server and optionally theold virtualized I/O server. Following block 309, control transfers toblock 310, where process 300 terminates and control returns to a callingroutine.

With reference to FIG. 4, an example process 400 is illustrated thatmigrates active I/O connection types of clients in a client clusteraccording to various aspects of the present disclosure. It should beappreciated that portions of process 400 may execute, at any given pointin time, on clients 110 or 130, hosts 134 or 136, optional storagemanager 128, or a combination thereof. Process 400 may be periodicallyinitiated at block 402 by, for example, storage manager 128, which maybe implemented as a stand-alone application on a dedicated server or onhosts 134 and 136. Process 400 then proceeds to decision block 404,where client 110 (alone or in conjunction with, for example, storagemanager 128) determines whether at least partial storage access controlrequires migration (e.g., due to an addition of an upgraded host (whichmay be included in a SAN or NAS) or maintenance on a current host and/ora disk array associated therewith). When migration is not indicated inblock 404, control transfers to block 410, where process 400 terminatesand control returns to a calling routine.

When migration is indicated in block 404, control transfers to block406, where each of the clients, in a client cluster, selects inconjunction with other clients in the client cluster and/or inconjunction with a new (second) virtualized I/O server) an I/Oconnection type. In this case, at least some of the clients in theclient cluster may need to select a less efficient I/O connection typethan is available in order to ensure that the new virtualized I/O servercan meet I/O demands of all of the clients in the client cluster. Thenew virtualized I/O server may correspond to, for example, a replica ofthe old virtualized I/O server. In this case, both the new and oldvirtualized servers may control storage access for the clients. Thefirst and second virtualized I/O servers may be, for example, located ina same storage area network (SAN). The new virtualized I/O server may,for example, correspond to a replica of the old virtualized I/O servermigrated to a new virtual host.

As one example, when a client cluster includes six clients, an I/O linkmay be limited such that only two I/O connection types can be IB, twoI/O connections types are required to be SCSI, and two connection typesare required to be iSCSI. As another example, the I/O connection typemay be selected based on testing (by a client) each of the multipleavailable I/O connection types to determine a performance level of eachof the multiple available I/O connection types. In this case, the I/Oconnection type may be selected (by a client in conjunction with otherclients), for example, based on which of the multiple available I/Oconnection types provides a highest performance level and allows aconnection between the client and the new virtualized I/O server to bemaintained. Next, in block 408, the virtualized I/O server controlsstorage access for each client using selected I/O connection types. Asmentioned above, storage access control for at least some clients in aclient cluster may remain under control of the first virtualized I/Oserver to substantially balance a load for the client cluster betweenthe first and second virtualized I/O servers. Following block 408,control transfers to block 410, where process 400 terminates and controlreturns to a calling routine.

Accordingly, techniques have been disclosed herein that select an I/Oconnection type to maximize data transfer efficiency (between a diskstorage client and a disk storage I/O server) when either the client orthe I/O server are migrated.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particularembodiments only and is not intended to be limiting of the invention. Asused herein, the singular forms “a”, “an” and “the” are intended toinclude the plural forms as well, unless the context clearly indicatesotherwise. It will be further understood that the terms “comprises”and/or “comprising,” when used in this specification, specify thepresence of stated features, integers, steps, operations, elements,and/or components, but do not preclude the presence or addition of oneor more other features, integers, steps, operations, elements,components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of allmeans or step plus function elements in the claims below, if any, areintended to include any structure, material, or act for performing thefunction in combination with other claimed elements as specificallyclaimed. The description of the present invention has been presented forpurposes of illustration and description, but is not intended to beexhaustive or limited to the invention in the form disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the invention.The embodiment was chosen and described in order to best explain theprinciples of the invention and the practical application, and to enableothers of ordinary skill in the art to understand the invention forvarious embodiments with various modifications as are suited to theparticular use contemplated.

Having thus described the invention of the present application in detailand by reference to preferred embodiments thereof, it will be apparentthat modifications and variations are possible without departing fromthe scope of the invention defined in the appended claims.

What is claimed is:
 1. A method for modifying an input/output (I/O) connection type between a client and a server, comprising: determining, by a client, when at least partial storage access control for the client is to be migrated from a first virtualized I/O server to a second virtualized I/O server; selecting, by the client, an I/O connection type from among multiple available I/O connection types available between the client and the second virtualized I/O server when the at least partial storage access control for the client is to be migrated; and communicating, by the client, the selected I/O connection type to the second virtualized I/O server, wherein the second virtualized I/O server is configured to facilitate storage access for the client using the selected I/O connection type.
 2. The method of claim 1, wherein the second virtualized I/O server is a replica of the first virtualized I/O server and the method further comprises: accessing, by the client, storage via both the first and second virtualized I/O servers.
 3. The method of claim 1, wherein the second virtualized I/O server resides on a different virtual host than the first virtualized I/O server and the second virtualized I/O server is further configured to facilitate storage access for the client during and following migration of the at least partial storage access control from the first virtualized I/O server to the second virtualized I/O server.
 4. The method of claim 1, wherein the client includes a cluster of clients and each of the clients in the cluster is configured to select respective I/O connection types in conjunction with the other clients to balance a load on the second virtualized I/O server.
 5. The method of claim 1, wherein the I/O connection type is a Fibre Channel connection, a small computer system interface (SCSI) connection, an Internet SCSI connection, or an InfiniBand connection.
 6. The method of claim 1, wherein the first and second virtualized I/O servers are located in a same storage area network and the second virtualized I/O server is further configured to facilitate storage access for the client following migration of the at least partial storage access control from the first virtualized I/O server to the second virtualized I/O server.
 7. The method of claim 1, wherein the selecting, by the client, an I/O connection type from among multiple available I/O connection types available between the client and the second virtualized I/O server further comprises: testing, by the client, each of the multiple available I/O connection types to determine a performance level of each of the multiple available I/O connection types; and selecting, by the client, the I/O connection type based on which of the multiple available I/O connection types yields a highest performance level, as indicated by the testing, and allows a connection between the client and the second virtualized I/O server to be maintained.
 8. The method of claim 1, wherein the client is included in a client cluster that includes at least one other client, and wherein storage access control for the at least one other client remains under control of the first virtualized I/O server to substantially balance a load for the client cluster between the first and second virtualized I/O servers, where I/O connection types for clients in the client cluster may be the same or different.
 9. The method of claim 1, wherein the client queries the second virtualized I/O server to determine the multiple available I/O connection types.
 10. The method of claim 1, wherein the second virtualized I/O server is a replica of the first virtualized I/O server that is migrated to a new virtual host.
 11. A computer-readable storage medium including computer-readable code for modifying an input/output (I/O) connection type between a client and a server, the computer-readable code comprising: code for determining, by a client, when at least partial storage access control for the client is to be migrated from a first virtualized I/O server to a second virtualized I/O server; code for selecting, by the client, an I/O connection type from among multiple available I/O connection types available between the client and the second virtualized I/O server when the at least partial storage access control for the client is to be migrated; and code for communicating, by the client, the selected I/O connection type to the second virtualized I/O server, wherein the second virtualized I/O server is configured to facilitate storage access for the client using the selected I/O connection type.
 12. The computer-readable storage medium of claim 11, wherein the second virtualized I/O server is a replica of the first virtualized I/O server and the code further comprises: code for accessing, by the client, storage via both the first and second virtualized I/O servers.
 13. The computer-readable storage medium of claim 11, wherein the second virtualized I/O server resides on a different virtual host than the first virtualized I/O server and the second virtualized I/O server is further configured to facilitate storage access for the client during and following migration of the at least partial storage access control from the first virtualized I/O server to the second virtualized I/O server.
 14. The computer-readable storage medium of claim 11, wherein the client includes a cluster of clients and each of the clients in the cluster is configured to select respective I/O connection types in conjunction with the other clients to balance a load on the second virtualized I/O server, and wherein the I/O connection types include a Fibre Channel connection, a small computer system interface (SCSI) connection, an Internet SCSI connection, and an InfiniBand connection.
 15. The computer-readable storage medium of claim 11, wherein the first and second virtualized I/O servers are located in a same storage area network and the second virtualized I/O server is further configured to facilitate storage access for the client following migration of the at least partial storage access control from the first virtualized I/O server to the second virtualized I/O server.
 16. The computer-readable storage medium of claim 11, wherein the code for selecting an I/O connection type, from among multiple available I/O connection types, available between the client and the second virtualized I/O server further comprises: code for testing, by the client, each of the multiple available I/O connection types to determine a performance level of each of the multiple available I/O connection types; and code for selecting, by the client, the I/O connection type based on which of the multiple available I/O connection types yields a highest performance level, as indicated by the testing, and allows a connection between the client and the second virtualized I/O server to be maintained.
 17. The computer-readable storage medium of claim 11, wherein the client is included in a client cluster that includes at least one other client and storage access control for the at least one other client remains under control of the first virtualized I/O server to substantially balance a load for the client cluster between the first and second virtualized I/O servers, and wherein the client queries the second virtualized I/O server to determine the multiple available I/O connection types, where I/O connection types for clients in the client cluster may be the same or different.
 18. A data processing system, comprising: a first virtualized server configured to facilitate storage access control; a client configured to select an I/O connection type, from among multiple available I/O connection types, when at least partial storage access control for the client is migrated from the first virtualized server; and a second virtualized I/O server configured to transmit the multiple available I/O connection types to the client in response to a query from the client, wherein the second virtualized I/O server is further configured to facilitate storage access control for the client during and following migration of the at least partial storage access control from the first virtualized I/O server to the second virtualized I/O server.
 19. The data processing system of claim 18, wherein the client is further configured to test each of the multiple available I/O connection types to determine a performance level of each of the multiple available I/O connection types and select the I/O connection type based on which of the multiple available I/O connection types yields a highest performance level, as indicated by the testing, and allows a connection between the client and the second virtualized I/O server to be maintained.
 20. The data processing system of claim 18, wherein the client is included in a client cluster that includes at least one other client and storage access control for the at least one other client remains under control of the first virtualized I/O server to substantially balance a load for the client cluster between the first and second virtualized I/O servers, and wherein the client queries the second virtualized I/O server to determine the multiple available I/O connection types, where I/O connection types for clients in the client cluster may be the same or different. 